package com.android.jianboshi.manager;

import android.os.Build;

import androidx.annotation.RequiresApi;

import com.android.baselibrary.tool.Log;
import com.android.jianboshi.bean.DataInfo;
import com.android.jianboshi.constants.Constants;
import com.blankj.utilcode.util.ConvertUtils;

import java.util.ArrayList;
import java.util.List;

//蓝牙数据处理类
public class BoxingManager {

    //接收到的气压数据DataInfo集合
    public List<DataInfo> airPressureList = new ArrayList<>();

    /**
     * 解析扫描结果
     */
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public void parseScanResult(byte[] data) {
        //0709 47594D535452 09 CA    D4  000231 006C 1E 00
        //D4序号    006C气压

        byte byte2 = data[10+ Constants.length];  //序号
        byte byte3 = data[14+ Constants.length];  //气压高字节
        byte byte4 = data[15+ Constants.length];  //气压低字节
        byte byte5 = data[16+ Constants.length];  //打开采样次数
        //气压字节
        int byte1_int = ConvertUtils.hexString2Int(ConvertUtils.bytes2HexString(new byte[]{byte3, byte4}));
        //采样率
        int samplingTimes = ConvertUtils.hexString2Int(ConvertUtils.bytes2HexString(new byte[]{byte5}));
        //实际气压值 = 气压字节/100
        double airPressure = byte1_int / 100d;

        if (airPressureList.size() > 0) {
            //为了防止丢数据，所有同一条数据，设备会发3遍，所以序号一样数据，客户端过滤掉，同一组序号只取一次
            if (airPressureList.get(airPressureList.size() - 1).num == byte2) {
                //如果这条数据的序号和上一条的序号一样，就不要这条数据了
                return;
            }
        }
        //将气压，采样率两个字段存DataInfo对象，并添加到集合
        airPressureList.add(new DataInfo(airPressure, samplingTimes, byte2));
    }

}
